查看原文
其他

Rumtime 1200升级:伦敦升级支持、质押功能更新以及更多

Moonbeam官方 Moonbeam Community 2022-04-29


Moonbeam/Moonriver致力于成为波卡/Kusama生态系统中最兼容以太坊的平行链。正因为如此,Moonbeam团队持续更新以带来新的功能,如统一账户事件订阅追踪RPC支持


Moonbeam团队的目标是尽可能地高度兼容以太坊,为项目提供无缝环境以及进入波卡/Kusama生态系统的首选入口。


通过团队不断努力的付出,最新的Runtime 1200升级为Moonbeam以太坊兼容层带来重大升级。此次Runtime升级也与新客户端(v0.19)相关联,其中的第一步是支持EIP-1559。


本文将简要介绍Runtime 1200升级的主要技术更新。

1

伦敦升级支持

2021年8月5日,以太坊推出了伦敦硬分叉,名为EIP-1559,这其中也包括其他的EIP。这个硬分叉背后的主要原因是引入了新的交易定价机制,其中包括每块的固定交易费用,该费用将被销毁,并动态扩展/收缩区块大小以应对瞬态拥塞。


Moonbeam Runtime 1200升级增加了对以下EIP(伦敦硬分叉的所有部分)的支持:

  • EIP-1559 - 一种新的交易定价机制

  • EIP-3198 - BASEFEE操作码,这使EVM能够访问区块基本费用

  • EIP-3529 - 清除存储时减少退款

  • EIP-3541 - 拒绝以0xEF字节开头的新合约

2

EIP-1559:新的费用机制

EIP-1559的引入是将第一价格拍卖的费用模型转换成基本费用加“小费”的新交易定价机制。EIP的目标并不是减少gas费用,而是为用户创建更高可预见性和透明度的费用架构。此外,支持EIP-1559的钱包将为用户提供更精准的交易费用预估,以提高用户交易体验。


为了能够支持EIP-1559费用机制,需要在Runtime(具有核心状态转换功能的基于WASM的逻辑)和客户端(具有/围绕Runtime和节点的网络和通信层)完成不同的升级。


此次Runtime 1200升级增加了对以下EIP的支持,以完全支持EIP-1559:

  • EIP-2718 - 引入类型化事务。新的事务类型仍以RLP编码,并通过开头字节来指定事务类型。若未包含此字节,则该事务将被归为传统事务,具有向后兼容性

  • EIP-2930 - 引入交易类型0x01,带有可选的访问列表,以减少访问账户或储存插槽

  • EIP-1559 - 引入交易类型0x02,带有新费用模型机制的必要更新,基于之前的交易类型所构建


尽管如此,Runtime 1200升级仅引入了用于实施EIP-1559费用机制的构建区块,计划在未来的Runtime更新中实现。目前的实施包含以下主要内容:

  • 基本费用设置为网络的最低gas费用,在当前实施中不会有动态变化。也就是说,Moonbeam网络的最低gas费为100 Gwei,Moonriver和Moonbase Alpha的均为1 Gwei。eth_gasPrice将返回此数值

  • 区块大小将不会发生变化,固定为每个区块有1500万gas,每笔交易约为1295万个gas。这是由中继链的区块执行时间所决定的,所以区块大小不会有动态变化

  • 任何与上述基本费用相关的费用将会退还给交易发送者

  • 优先级费用即“小费”用于优先处理交易。在当前实施中,这笔费用并不会给区块作者,而是80%用于销毁,20%存入财政库。这可能会在未来发生变化

3

以太坊API更新

EIP-1559的首个构建区块的引入也包括了Moonbeam以太坊API的一些更新。新的RPC和属性是上述所提及的EIP的其中一部分,可以总结如下:

  • eth_feeHistory - 新的RPC端点,返回上限为1024个区块的历史gas信息集合

  • baseFeePerGas - 新的区块属性,用于指定区块的基本费用。目前,这是每个网络的最低gas费用。eth_gasPrice将返回此数值

  • effectiveGasPrice - 交易收据内的新属性。交易执行后支付的gas费用

  • accessList - 新的交易对象属性,EIP-2930提案中的一部分。[ [ { 20 bytes }, [ { 32 bytes }...] ] ... ]类型数组,存储合约地址和储存密钥

  • maxFeePerGas - 新的交易对象属性。定义交易允许支付的基础费用

  • maxPriorityFeePerGas - 新的交易对象属性。对应优先处理交易的“小费”。目前,此费用的80%将用于销毁,20%存入财政库。这可能会在未来发生变化

  • type - 新的交易对象属性。事务类型:0x0为传统事务,0x1为EIP-2930事务,0x2为EIP-1559事务

4

质押查询更新

尽管Runtime 1200升级的主要部分是对于EIP-1559的支持,但是同时也包括了平行链质押pallet(parachainStaking)的一些更新。


这些更新主要是为了减少CandidateState的大小,从而减小有效性证明(PoV)。PoV需要谨慎管理,若PoV过大,则可能会导致平行链暂停。因此,它将被分为三个独立存储的参数:candidateInfo、topDelegations和bottomDelegations。


排名靠前的委托人是指有效的委托人,即意味着质押量排名靠前的N名委托人。N是指每个收集人委托人数量的上限(目前所有网络上的该数值为300)。排名靠后的委托人是指超出活跃委托人集的委托人。每个收集人最多只能有50名排名靠后的委托人。


排名靠后的委托人数量达到后,若有新的委托人加入,则根据质押量排名最后的委托人将会被自动踢出,并立即执行撤销委托。


注意事项:(每个收集人)排名靠后50名委托人之外的委托人将被立即自动执行撤销委托。任何超过排名靠后的委托人数的委托将被立即撤销。


相关质押的链状态更新部分如下所示:

  • candidateState - 现已被弃用,不会返回任何日期。将被接下来的三个函数所取代:

  • candidateInfo - 返回候选人数据:

  • bond: 绑定数量

  • delegationCount: 指定候选人的总委托数量

  • totalCounted: 绑定数量和排名靠前委托数量的总和

  • lowestTopDelegationAmount: 最低排名靠前的委托数量

  • highestBottomDelegationAmount: 最高排名靠后的委托数量

  • lowestBottomDelegationAmount: 最低排名靠后的委托数量

  • topCapacity: 排名靠前委托人的剩余名额

  • bottomCapacity: 排名靠前委托人的剩余名额

  • request: 指定时间内减少候选人自身绑定数量的待处理请求(上限为1)

  • status: 目前候选人的状态(活跃、空闲或离开)

  • topDelegations - 返回给指定候选人的活跃委托人数量,即排名靠前的N名委托人,N是指每个候选人的委托人数量上限

  • bottomDelegations - 返回给指定候选人的非活跃委托人数量。这些委托人的委托数量是根据质押量来排名的

  • maxDelegatorsPerCandidate - 现已弃用,由maxTopDelegationsPerCandidate取代

  • maxTopDelegationsPerCandidate - 返回每个候选人的最高活跃委托人数量。举例而言,目前所有基于Moonbeam的网络将此数值设置为300

  • maxBottomDelegationsPerCandidate - 返回排名靠后的最高委托人数量。举例而言,目前所有基于Moonbeam的网络将此数值设置为50


此外,还调整了以下事件:

  • CandidateWentOffline - 目前仅提供候选人地址

  • CandidateBackOnline - 目前仅提供候选人地址


同时,新增了以下事件:

  • DelegationKicked - 当排名靠后的委托人被踢出委托人列表时发出。当新的委托人进入且其质押量高于lowestBottomDelegationAmount时会发生此情况

5

XCM相关更新

Moonriver在Runtime 1102升级时引入了XCM。截止至本文撰写时,已经有超过8000枚KSM和390000枚RMRK作为xcKSM和xcRMRK的形式登陆Moonriver。


这些XC-20资产能够受益于Kusama的互操作性,同时,得益于在Moonriver上相似的ERC-20接口,这些资产也能够轻松集成于EVM dApp。例如,DEX上已经出现xcKSM和xcRMRK。


Runtime 1200升级为XCM带来如下更新:

  • 在Moonbeam上启用XCM - 目前XCM仍未在波卡上启用。一旦中继链级别功能启用,Moonbeam即可支持

  • 为新的Statemine资产表示提供支持 - 为Statemine的multi-location资产表示提供支持,不久即可启动。但目前暂不支持将资产转回Statemine


在AssetManager pallet中,如下关于查询函数方面的更新:

  • assetIdUnitsPerSecond - 现已弃用,由asset_type_units_per_second取代

  • assetTypeUnitsPerSecond - 返回关于执行相关XCM信息的每秒执行单位。与已弃用的函数类似,但现在需要的是assetType(而不是以前的assetID)。这需要了解资产的multi-location地址


在AssetManager pallet中,调整了以下事件:

  • UnitsPerSecondChanged - 现在返回assetType(而不是以前的assetId)


在AssetManager pallet中,新增/调整了以下extrinsic:

  • setAssetUnitsPerSecond - 已调整,现在你需要提供assetType(而不是以前的assetId)

  • changeExistingAssetType - 新增extrinsic,允许更改与assetType相关联的assetId

6

其他更新

除稳定性和性能更新以外,Runtime 1200升级还有如下的一些更新:

  • AuthorMapping precompile - 该预编译合约是收集人能够通过以太坊API执行所有必要动作的缺失部分。这意味着收集人能够在Ledger/Trezor设备中管理他们的账户。适用于所有Moonbeam网络

  • Native token ERC-20 interface - 该预编译合约之前已经在Moonbase Alpha and Moonriver中采用。为了使预编译合约可以向后兼容需要deposit和withdraw函数的dApp,Runtime 1200升级也加入了新的虚设deposit和withdraw函数。Deposit函数只会将金额存入交易的发送者并发出必要的事件。Withdraw函数只会发出事件

  • Democracy precompile - 该预编译合约之前已经在Moonbase Alpha中采用。Runtime 1200升级将该预编译加入至Moonriver,使网络参与者能够使用以太坊API参与民主公投。


关于

Moonbeam

Moonbeam是波卡(Polkadot)网络中与以太坊兼容的智能合约平台,可实现轻松构建原生的互操作性去中心化应用。以太坊兼容特性允许开发者以最少的更改将现有的Solidity智能合约和DApp前端部署到Moonbeam。Moonriver作为Kusama上最活跃的平行链,已有80多个DApp完成在Moonriver的集成。Moonbeam将受益于Polkadot中继链的共享安全性和链接波卡其他链的互操作优势。


如需了解更多信息,请访问:

https://moonbeam.network/


关于

Moonriver

Moonriver是Moonbeam的同行网络,旨在为激励实验提供永久性的测试环境。新上线项目的代码将优先部署到Moonriver,在其真实的经济环境下经历一系列的测试与实验验证。当验证完成并通过测试之后,项目代码才可正式部署至波卡上的Moonbeam。


如需了解更多信息,请访问:

https://moonbeam.network/networks/moonriver/


Moonbeam


欢迎加入Moonbeam社区

期待与您携手打造去中心化跨链世界 ~

△ 获取Moonbeam官方最新资讯

更多Moonbeam信息

官网: https://moonbeam.network

微博:https://weibo.com/u/7606061434

Twitter: https://twitter.com/MoonbeamCN

Telegram: https://t.me/moonbeam_CN

Discord: https://discord.gg/skPfXvJWG7

中文电报群助手:@MoonbeamSister

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存